<?php

class PanelController extends AppController {

    //public $template = 'panel';

    public function before_filter() {
        if (Auth::is_valid() == false) {
            Router::redirect("/login/privado");
            return false;
        } else {
            View::template('panel');
        }
    }

    /*public function before_filter() {
        //Load::lib('auth');
        if (Auth::is_valid() == false) {
            Router::route_to('controller: login', 'action: index', 'id: privado');
            return false;
        }
    }*/

    public function index() {
        $this->mactual = "Panel";
    }

    public function nuevoArtista() {
        $this->mactual = "Artistas";
        $this->generos = $this->Genero->find();
        if ($this->has_post('artista')) {
            $datos = $this->post('artista');
            if (count($datos['genero']) > 0) {
                $datos['visto'] = 0;
                if (strlen($datos['perfil']) > 10) {
                    $datos['perfil'] = "id_blogger";
                }
                $guardar = new Artistas($datos);
                if ($guardar->save()) {
                    foreach ($datos['genero'] as $key => $value) {
                        $datos_g = array("idArtista" => $guardar->id, "idGenero" => $key);
                        $this->Artistagenero->create($datos_g);
                    }
                    flash::success("El artista se guardo satisfactoriamente");
                } else {
                    flash::error("No se pudo guardar, Intento mas tarde");
                }
            } else {
                flash::error("el artista debe de tener por lo menos un genero");
            }
        }
    }

    public function listaArtistas($modo = "all", $page = 1) {
        $this->mactual = "Artistas";
    }

    public function editar_empleado($id, $eliminar = null) {
        $this->mactual = "Empleados";
        if ($eliminar == "delete") {
            $this->eliminar = true;
            if (!$this->Usuario->delete($id))
                Flash::error('Falló la operación de Eliminación');
            else
                Flash::success('El <b>Empleado</b> se elimino satisfactoriamente');
        }
        else {
            if ($this->has_post('empleado')) {
                $datos = $this->post('empleado');
                $datos['id'] = $id;
                $datos['clave'] = md5($datos["dni_usuario"]);
                $empleado = new Usuario($datos);
                if (!$empleado->update()) {
                    Flash::error('Falló la operación de modificación');
                } else {
                    Flash::success('El <b>EMPLEADO</b> se modifico satisfactoriamente');
                }
            }
        }
        $this->datosEditar = $this->Usuario->getUsuario($id);
    }

    public function entrada() {
        $this->mactual = "Panel";
        if ($this->has_post('entrada')) {
            $datos = $this->post('entrada');
            $datos["usuario_id"] = Auth::get('id');
            $entrada = new Entrada($datos);
            if (!$entrada->save()) {
                flash::error("La entrada no se pudo guardar");
                $this->datos = $this->post('entrada');
            } else if ($this->has_post('equipo')) {
                $datosEquipo = $this->post('equipo');
                foreach ($datosEquipo as $value) {
                    if (strlen($value["nom_equipo"]) > 0) {
                        $value["entrada_id"] = $entrada->id;
                        $value["almacen"] = 1;
                        $equipo = new Equipo($value);
                        if (!$equipo->save())
                            flash::error("el equipo " . $value['nom_equipo'] . " no se guardo");
                    }
                }
                Flash::success('La entrada se guardo satisfactoriamente');
            }
        }
    }

    public function agregar_equipo($cant) {
        $this->set_response('view');
        $this->mactual = "Panel";
        $this->cantidad = $cant;
    }

    public function editar_equipo($id, $eliminar = null) {
        $this->mactual = "Panel";
        $this->id = $id;
        if ($eliminar == "delete") {
            $this->eliminar = true;
            if (!$this->Equipo->delete($id))
                Flash::error('Falló la operación de Eliminación');
            else {
                $this->DetalleEquipo->delete("equipo_id=" . $id . "");
                Flash::success('El <b>EQUIPO</b> se elimino satisfactoriamente');
            }
        } else {
            $this->editar = true;
            if ($this->has_post('equipo') && $this->has_post('detalle')) {
                $datos = $this->post('equipo');
                $datosDetalle = $this->post('detalle');
                $datos['id'] = $id;
                $equipo = new Equipo($datos);
                if (!$equipo->update()) {
                    Flash::error('Falló la operación de modificación');
                } else {
                    $detalle = new DetalleEquipo($this->post('detalle'));
                    if (!$detalle->update()) {
                        Flash::error('Falló la operación de modificación de detalle');
                    }
                    else
                        Flash::success('El <b>EQUIPO</b> se modifico satisfactoriamente');
                }
            }
            $this->datosEditar = $this->Equipo->getEquipo($id);
        }
    }

    public function lista_equipos($modo = "all", $page = 1) {
        $this->mactual = "Panel";
        $this->tipo = $modo;
        $this->equipos = $this->Equipo->lista($modo, $page);
    }

    public function sendFile() {
        ini_set('display_errors', 'Off');
        $this->template = NULL;
        $this->set_response('view');
        if (!$this->equipos = $this->Equipo->lista("all")) {
            Flash::warning('No existen registros para exportar');
//$this->render(NULL);
        }
    }

    public function equiposPdf() {
        $this->set_response('view');
        if (!$this->equipos = $this->Equipo->reporteEquipo()) {
            Flash::warning('No existen registros para exportar');
//$this->render(NULL);
        }
    }

    public function detalle_equipo($id) {
        $this->set_response('view');
        $this->mactual = "Panel";
        if ($this->DetalleEquipo->datos($id)) {
            $this->existeDetalle = true;
            $detalle = $this->DetalleEquipo->datos($id);
            $this->ubicacion = $this->DetalleEquipo->getUbicacion($detalle->ubicacion);
            $this->condicion = $this->DetalleEquipo->getCondicion($detalle->condicion);
            $this->estado = $this->DetalleEquipo->getEstado($detalle->estado);
            $this->marca = $this->DetalleEquipo->getMarca($detalle->marca);
            $this->modelo = $detalle->modelo;
        }
        else
            Flash::notice("Este producto aun no tiene detalle <a href='/panel/agregar_detalle/" . $id . "/'>[<strong>AGREGAR DETALLE</strong>]</a>");
    }

    public function agregar_detalle($id) {
        $this->mactual = "Panel";
        $this->idequipo = $id;
        if ($this->has_post('detalle')) {
            $datos = $this->post('detalle');
            $detalle = new DetalleEquipo($datos);
            if (!$detalle->save()) {
                $this->datos = $this->post('detalle');
                Flash::error('ERROR: Falló la Operación de registro');
            } else {
                Flash::success('El nuevo <b>Detalle</b> se guardo satisfactoriamente');
            }
        }
    }

    public function salida() {
        $this->mactual = "Panel";
        $this->empleados = $this->Usuario->lista("all");
        if ($this->has_post('salida')) {
            $datos = $this->post('salida');
            $datos["fec_instalacion"] = "0000-00-00";
            $datos["nro_contrato"] = 0;
            $salida = new Salida($datos);
            $guardarSalida = $salida->save();
            $losEquipos = explode(",", $datos['equipos']);
            array_shift($losEquipos);
            $losEquipos = array_unique($losEquipos);
            foreach ($losEquipos as $value) {
                if (is_numeric($value)) {
                    $guardarEquipo = array("equipo_id" => $value, "salida_id" => $salida->id);
                    $equipo = new SalidaEquipo($guardarEquipo);
                    if (!$equipo->save()) {
                        $errorEquipo = true;
                        Flash::error('Falló la Operación de registro');
                    } else {
                        $actualizar = $this->DetalleEquipo->find_first("conditions: equipo_id = '$value'");
                        $actualizar->estado = 5;
                        $actualizar->update();
                    }
                }
            }
            if (!$guardarSalida && isset($errorEquipo)) {
                $this->datos = $this->post('salida');
                Flash::error('Falló la Operación de registro');
            } else {
                Flash::success('La nueva <b>Salida</b> se guardo satisfactoriamente');
            }
        }
    }

    public function asignar_equipo() {
        $this->set_response('view');
        $this->mactual = "Panel";
        $this->equipos = $this->Equipo->lista("all");
    }

    public function equipo_asignado() {
        $this->set_response('view');
        $this->mactual = "Panel";
    }

    public function reportes($modo = "all", $page = 1) {
        $this->mactual = "Panel";
        $this->tipo = $modo;
        if ($this->has_post('detalle')) {
            $datos = $this->post('detalle');
            $salida = $this->Salida->find($datos['id']);
            $salida->fec_instalacion = $datos['fec_instalacion'];
            $salida->nro_contrato = $datos['nro_contrato'];
            if (!$this->Salida->update($datos)) {
                Flash::error('Falló la operación de modificación');
            } else {
                Flash::success('la <b>SALIDA</b> se actualizo satisfactoriamente');
            }
        }
        if ($this->has_post('equipo')) {
            $datos = $this->post('equipo');
            foreach ($datos as $key => $value) {
                $actualizar = $this->DetalleEquipo->find_first("conditions: equipo_id = '$key'");
                $actualizar->estado = $value;
                $actualizar->update();
            }
        }
        $this->reportes = $this->Salida->lista($modo, $page);
    }

    public function reporte_pendiente($id) {
        $this->set_response('view');
        $this->mactual = "Panel";
        $this->id = $id;
        $this->equiposAsignados = $this->SalidaEquipo->getsalida($id);
    }

    public function consulta() {
        $this->mactual = "Panel";
        if ($this->has_post('buscar')) {
            $datos = $this->post('buscar');
            $this->actual = $datos;
            if (strlen($datos['estado']) == 0 && strlen($datos['serie']) == 0 && strlen($datos['modelo']) == 0)
                Flash::notice("Ingrese algun dato de busqueda");
            else {
                $search = $this->Equipo->search($datos['estado'], $datos['serie'], $datos['modelo']);
                if (count($search) == 0)
                    Flash::notice("No se encontro ningun equipo");
                else {
                    $this->resultado = $search;
                }
            }
        }
    }

}
